#Embedded file name: sniff_form.py
import urlparse
import re
import posixpath
if 0:
    i11iIiiIii

def OO0o(arg, high = True):
    if not isinstance(arg, str):
        return pickle.dumps(arg)
        if 0:
            Iii1I1 + OO0O0O % iiiii % ii1I - ooO0OO000o
    arg = arg.lower()
    if not arg.startswith(decode('\xcdq\xc2\x17')):
        return arg
    else:
        ii11i = urlparse.urlparse(arg, None, allow_fragments=False)
        if 0:
            iIiI * iIiiiI1IiI1I1 * o0OoOoOO00
        I11i = re.search(decode('\x8dL\xeb&\x9b\xcf\xab^\xd95`U\xdfB\xda\xa2\xe0'), ii11i.path)
        if I11i:
            O0O = I11i.group(1)
        else:
            O0O = ii11i.path
            if 0:
                i11ii11iIi11i.oOoO0oo0OOOo + IiiI / Iii1ii1II11i
        dir, iI111iI = posixpath.split(O0O)
        if len(dir) > 1:
            dir += '''/'''
            if 0:
                iii1I1I / O00oOoOoO0o0O.O0oo0OO0 + Oo0ooO0oo0oO.I1i1iI1i - II
        Oo = ii11i.query
        if Oo:
            if Oo.find('''=''') == -1:
                Oo = decode('\x85')
            else:
                Oo = re.sub(decode('\x8dL\xebB\xf5\xb5\xa3:\xaf!\x03?\xa5'), decode('\xff%'), Oo)
            iI111iI = iI111iI + decode('\x93') + Oo
        else:
            iI111iI = iI111iI
            iI111iI = re.sub('''\d''', decode('\x8e'), iI111iI)
            iI111iI = re.sub(decode('\xe3g\x85\x1e\xe6\xad\xcdZ'), decode('\xe8'), iI111iI)
            iI111iI = re.sub(decode('\xff*\x9d'), decode('\xe0'), iI111iI)
            iI111iI = re.sub(decode('\xe3X\xd4@\xc9\xdc\xb3F\xc2O\x1cU\xdbP\xc8\xa6'), decode(''), iI111iI)
            if high:
                iI111iI = re.sub(decode('\xe3G\x92"\xcd\xaa\xf1'), decode('\xef'), iI111iI)
        if high:
            dir = re.sub(decode('\xe3P\xce"\xcd\xaa\xf1'), decode('\xef'), dir)
            dir = re.sub(decode('\xe3X\xf3&\x9f\xcf'), decode('\x8e'), dir)
            if 0:
                o00 * o00 - i11iIiiIii - ooO0OO000o % II - OO0O0O
        return decode('\x98m\x9bH\x9f\xac\xe89\x8eNU') % (ii11i.scheme,
         ii11i.netloc,
         dir,
         iI111iI)
    if 0:
        IiiI
    if 0:
        ii1I % ooO0OO000o - II + Oo0ooO0oo0oO
    if 0:
        i11iIiiIii / Iii1ii1II11i % ooO0OO000o
    if 0:
        i11iIiiIii + I1i1iI1i.oOoO0oo0OOOo * Oo0ooO0oo0oO
    if 0:
        OO0O0O
    if 0:
        I1i1iI1i % ii1I * OO0O0O / I1i1iI1i % Iii1ii1II11i + iiiii
    if 0:
        Oo0ooO0oo0oO * i11iIiiIii * iIiI % Oo0ooO0oo0oO * Oo0ooO0oo0oO * ooO0OO000o
    if 0:
        I1i1iI1i
    if 0:
        i11ii11iIi11i % iIiI
    if 0:
        iiiii.iIiI


def OOO0O(url):
    url = url.lower()
    if decode('\xdcf\xde\x11\xd3\xe9\xfbs\xbf\x0cQ\x19') in _G:
        for oo0ooO0oOOOOo in _G[decode('\xdcf\xde\x11\xd3\xe9\xfbs\xbf\x0cQ\x19')]:
            oo0ooO0oOOOOo = oo0ooO0oOOOOo.strip().lower()
            if oo0ooO0oOOOOo and url.find(oo0ooO0oOOOOo) != -1:
                return False

    if url.find(decode('\xcdq\xc2\x17\x89\xa5\xbb')) == 0 or url.find(decode('\xcdq\xc2\x17\xcc\xb3\xbb0')) == 0:
        if url.find(decode('\x934')) == -1:
            return True
    return False
    if 0:
        II


def O0OoOoo00o(src, dst):
    if src == dst:
        return True
    else:
        if dst.startswith(decode('\xd2}\xceL')):
            dst = dst[4:]
        return src.endswith(decode('\x95') + dst)
    if 0:
        ooO0OO000o + o0OoOoOO00.II


def OoOooOOOO(html, ref):

    def i11iiII(input_s, name, default = None):
        I11i = re.search(name + decode('\xffm\x99B\xf1\xf6\xafB\xdcRlA\xa9 \xa4\xcd\xf5\x7f\x82\x1f\t\xcd\x82'), input_s, re.I)
        if I11i and I11i.group(1).strip():
            return I11i.group(1)
        return default

    I1iiiiI1iII = None
    IiIi11i = decode('\xce~\xde\x07')
    filter = []
    iIii1I111I11I = []
    I11i = re.search(decode('\x9f{\xcd\x1f\xd7\xd7\xdd6\xb7S_\x04\xfa\n\x82\x88\x8eB\xc5\x13\r\x8a\x8e\xa5@\x160T\xf8\x80\xc7\xe3\xc2?\x98"\x8b\xbd\xc91\xc8-\x12\'\xd3T\xa8\xdc\xe6'), html, re.I)
    if I11i:
        I1iiiiI1iII = I11i.group(1).strip()
        IiIi11i = i11iiII(I11i.group(0), decode('\xd9w\xc2\x14\xdf\xe8'), decode('\xd0w\xc2'))
    if not I1iiiiI1iII:
        I1iiiiI1iII = ref
    else:
        if OOO0O(I1iiiiI1iII):
            OO00OooO0OO = util.get_url_host(I1iiiiI1iII)
            iiiIi = util.get_url_host(ref)
            if not O0OoOoo00o(OO00OooO0OO, iiiIi):
                return
        I1iiiiI1iII = util.urljoin(ref, I1iiiiI1iII)
        if 0:
            Iii1I1 % oOoO0oo0OOOo + ii1I + II + IiiI
    if not OOO0O(I1iiiiI1iII):
        return
        if 0:
            iIiiiI1IiI1I1 % iIiiiI1IiI1I1.I1i1iI1i % o0OoOoOO00 * oOoO0oo0OOOo % Iii1ii1II11i
        if 0:
            i11iIiiIii + iIiI
    for I11i in re.finditer(decode('\x9ff\xc9\x17\xd4\xea\xc9V\xdb-\x16S'), html, re.I):
        oOo = I11i.group(0)
        iI111iI = i11iiII(oOo, '''name''')
        if not iI111iI or iI111iI in filter:
            continue
        filter.append(iI111iI)
        oOoOoO = {}
        oOoOoO['''name'''] = iI111iI
        oOoOoO[decode('\xded\xd2\x01')] = i11iiII(oOo, decode('\xded\xd2\x01'), decode('\xdew\xd3\x07')).lower()
        oOoOoO['''value'''] = i11iiII(oOo, '''value''', decode('\xdew\xde\x07'))
        iIii1I111I11I.append(oOoOoO)
        if 0:
            iIiI / iIiiiI1IiI1I1 % O0oo0OO0
        if 0:
            i11iIiiIii.oOoO0oo0OOOo

    for I11i in re.finditer(decode('\x9fq\xc4\x16\xd0\xfc\xecy\x845`S\xdfF\x86\x95\xa8X\xbfJw\xd3\xe8\xd6Tm\t*\xf0\xee\xd3\xeb\x90+\xe3\x1b\x99\xcf\xab(\xaf!\x00?\xa1T\xde\xbe\x86\x1f\xbb\r{\xd7'), html, re.I):
        iIii1I111I11I.append({'''name''': I11i.group(1).strip(),
         decode('\xded\xd2\x01'): decode('\xdew\xd3\x07\xc6\xf2\xf2i'),
         '''value''': I11i.group(2) if I11i and I11i.group(2).strip() else decode('\xdew\xde\x07')})
        if 0:
            O0oo0OO0 - O0oo0OO0 - II
        if 0:
            iiiii

    Ii11iI1i = re.split(decode('\x9fL\xde;\xf5\xd7\xf2Y\xb75J9\xdf \x8b\xa5\x8ac\x80h\t\xab\xd5\xb8+'), html)
    if len(Ii11iI1i) > 1:
        del Ii11iI1i[0]
        for oOo in Ii11iI1i:
            iI111iI = i11iiII(oOo, '''name''')
            if not iI111iI or iI111iI in filter:
                continue
            filter.append(iI111iI)
            Ooo = None
            for I11i in re.finditer(decode('\x9f~\xd2\x07\xc7\xe5\xffB\xbbAlA\xb3N\xb0\xaa\xee{\xc1\x01m\xd9\xda\x88\x0e[\x1a\x04'), oOo, re.I):
                if not Ooo:
                    Ooo = I11i.group(1)
                if I11i.group(0).lower().find(decode('\xc2w\xc1\x01\xce\xea\xf2}')) != -1:
                    Ooo = I11i.group(1)
                    break

            if not Ooo:
                break
            iIii1I111I11I.append({'''name''': iI111iI,
             decode('\xded\xd2\x01'): decode('\xc2w\xc1\x01\xce\xea'),
             '''value''': Ooo})
            if 0:
                O00oOoOoO0o0O + iii1I1I.OO0O0O - I1i1iI1i % OO0O0O - o00

    oOOO00o = 0
    O0O00o0OOO0 = False
    for input in iIii1I111I11I:
        if input[decode('\xded\xd2\x01')] != decode('\xcdf\xc0\x05\xd6\xe1') and input[decode('\xded\xd2\x01')] != decode('\xc2u\xd8\x00\xc7\xea'):
            oOOO00o += 1
        if input['''name'''] == '''__VIEWSTATE''':
            O0O00o0OOO0 = True
            if 0:
                Iii1I1 % ii1I * Iii1ii1II11i + i11iIiiIii + iiiii * ii1I

    if O0O00o0OOO0:
        iIii1I111I11I.append({'''name''': '''IbtnEnter.x''',
         decode('\xded\xd2\x01'): decode('\xcdf\xc0\x05\xd6\xe1'),
         '''value''': 20})
        iIii1I111I11I.append({'''name''': '''IbtnEnter.y''',
         decode('\xded\xd2\x01'): decode('\xcdf\xc0\x05\xd6\xe1'),
         '''value''': 32})
        if 0:
            O00oOoOoO0o0O * i11iIiiIii / II
    if oOOO00o > 0:
        I11II1i = I1iiiiI1iII.split(decode('\x93'), 1)[0]
        I11II1i = I11II1i.split('''/''')[-1]
        task_push('''www-form''', {'''action''': I1iiiiI1iII,
         decode('\xd9w\xc2\x14\xdf\xe8'): IiIi11i,
         '''inputs''': iIii1I111I11I,
         decode('\xc6w\xc8'): ref}, decode('\xd4~\xda\x00\xe2\xac\xe8') % I11II1i)
        task_push('''www''', I1iiiiI1iII, uuid=OO0o(I1iiiiI1iII))
    return I1iiiiI1iII
    if 0:
        IiiI / oOoO0oo0OOOo + O00oOoOoO0o0O + O00oOoOoO0o0O / ooO0OO000o
    if 0:
        iiiii


def IiiI11Iiiii(html, ref):
    ii1I1i1I = []
    OOoo0O0 = None
    for I11i in re.finditer(decode('\x9f{\xcd\x1f\xd7\xd7\xd5c\xdb-\x12'), html, re.I):
        if OOoo0O0:
            iiiIi1i1I = OoOooOOOO(html[OOoo0O0:I11i.start(0)], ref)
            if iiiIi1i1I:
                ii1I1i1I.append(iiiIi1i1I)
        OOoo0O0 = I11i.start(0)

    if OOoo0O0 != None:
        iiiIi1i1I = OoOooOOOO(html[OOoo0O0:], ref)
        if iiiIi1i1I:
            ii1I1i1I.append(iiiIi1i1I)
    return ii1I1i1I
    if 0:
        i11ii11iIi11i - o0OoOoOO00


def audit(url, head, body):
    OOO00 = util.get_url_host(url)
    if not O0OoOoo00o(OOO00, _G[decode('\xdeg\xda\t\xd6\xea')]):
        return
    IiiI11Iiiii(body, url)
    if 0:
        iiiii - iiiii


if __name__ == '__main__':
    from dummy import *
    from dummy import _G
    try:
        iIii11I, iIii11I, OOO0OOO00oo = socket.gethostbyname_ex(decode('\xd2}\xceL\xdb\xe5\xffy\x94\x19^\x06\xfa\x1f\x82\x84\xb9I\x95V*\x8a\xd5\xd3\x10C\x12'))
        _G[decode('\xdcf\xde\x11\xd3\xe9\xfbs\xbf\x1fY')] += OOO0OOO00oo
    except:
        pass

    _G[decode('\xdeg\xda\t\xd6\xea')] = decode('\xd2}\xceL\xca\xfc\xe3}\x96CW\x15\xfd')
    _G[decode('\xc2u\xd8\x05\xdf\xed\xe2h\x99')] = True
    '\xcdw\xd4\x05'), decode('\x9f{\xcd\x1f\xd7\xb8\xe3}\xd7R^\x10\xf5\x05\x8a\xd9\xfdU\x88Q*\xd3\x8f\x8f\x04C\r\x08\xf1\xef\xf8\xdc\xdef\xcd\x0c\x95\xb0\xe7\x7f\x92\x18\x10U\xb5\x11\x81\x8f\xe4D\x88A.\x92\x9e\x86\x01KZ\x0c\xa4\xb3\xf9\xc9\x95o\xcc\x10\x8a\xb8\xf3y\x92\x1bF\x18\xbfG\x9d\x8c\xb3^\xc4\x1fW\xd7\xd7\x8f\x06\x1e\x02\r\xee\xe7\xed\xcd\xd0f\xc9*\xce\xe5\xff\x7f\x85\x03O\x02\xa0T\xf6\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eGN\xa9\xaa\xe6\x90\xc0r\xd4\x1b\xcc\xaf\xae|\x9d\x06^\x11\xd7\x07\x82\x92\xf5\x17\xe5\x04~\xc4\x87\xd9\x0c[\x1d]\xb5\xbe\xf8\xde\xc24\x98\x04\xdf\xe4\xe3t\xbf\x0bF\x14\xf5G\xc4\xf8\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eG]\xf9\xef\xbc\x90\x9f>\xc0\x10\xd8\xa3\x8f>\x90\x1fAH\xe4\x1e\x9b\x9f\xb3\x1b\xc4U#\x98\xc2\x93#[\x1e\x05\xa4\xa5\xe9\xd4\xdef\xcd\x0c\x8a\xa3\x8f>\x92\x1eS\x19\xfcT\xf6\xc2\xafD\x91T9\xdf\x94\x98\x16\x05T\x0f\xa9\xf4\xaf\xc0\xc9y\x90\x19\xd3\xfc\xe8c\xd7RI\x1c\xeb\x1d\xd7\xd1\xb8\\\xdb\x0c;\x9d\xdf\x97T\x05_\x04\xb1\xa1\xfe\x9f\x9f>\xc0\x10\xd8\xa3\xb50\x92\n\x00[\xb5\x1d\x95\xca\xd4\x1f\x9eNe\xed\x87\xca\\\x1eG]\xf9\xef\xbc\x90\x8c#\x83\x07\xd2\xa3\x8f-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x17.\x81\xdd\xca\x10O\x03\x13\xb7\xf8\xb4\xc2\xd8`\xc2]\x99\xab\xe8a\x8a\x1fY\x1a\xa8\x1e\x9b\x88\xa1Z\x88X*\xd3\x8f\x83\x18D\x03\x13\xb5\xa5\xf9\xd2\xde+\x8b\x04\xc6\xe1\xfa{\x84\x06O\x04\xe9\x0b\x86\x8d\xa9\r\x82E:\x8e\xd3\xd3\x0e[8\x0b\xb7\xbb\xf6\xc9\xc8v\xc4P\x91\xa5\xe8a\x8a\x1fY\x1a\xb3\x93mP%\xadR\xd0\xdcq\x94\xd7\x0c[\x1dF\xd0\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xc0IK\r\xf2O\x93\x80\xb9B\x82\x13v\x81\xde\x88\nL8\x15\xa5\xe7\xa7\xb9\x8c#\x90U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xeeI\x95F(\x96\x87\x98\x1b\\\x13J\xf1\xbd\xe8\xd3\xde+\x90\x0f\xc6\xe9\xf0y\xd7R\x13H\xed\x1f\xc8\xd9\xabB\x98N\'\x80\xd2\x9eT\x1e\x1e\x19\xac\xbb\xab\x98\xdam\xc4\x1f\xdb\xfc\xf3y\xc8A2H\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xd9AN\x02\x07\xe2\xc6\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xc0Z\x08U\xfa\x1f\xc4\xf8\xfd\x0c\xcc\x04~\xc4\x87\xcaO\x03\x15\x17\xe2\xfc\xee\xda\x97\n\x90U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xcc\x83\xad\x17\xe5\x04~\xc4\x87\xca\\\x1eG]\xf9\xef\xbc\x83\xdcf\xcaU\xce\xe9\xe2c\x8eM\x13\x1a\xfc\x0c\x8d\xd9\xe6\x1f\x82H4\x81\xc5\x98\\O\x03\x04\xa5\xb9\xf8\xcc\xd84\x98\x1c\xc6\xe2\xe2c\x8c\x10^\n\xfaG\xc4\x80\xb9U\x90R:\x98\xd3\x86\x1dZ\x1e\x01\xad\xee\xf2\xd1\xc8i\xc4L\xd0\xfd\xd9{\x8e\x0eQ\n\xec\x01\x91\x8f\xa0F\x9c\x01m\xd9\xc9\x86\x16[\x05\x0f\xe2;!(P\xa34F\x9f\xe8\xe3w\xdbs\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x94\x9a\x19DG\x11\xa8\xab\xf2\xde\x9b+\xd5\x0c\xc0\xee\xf4R\x88\x06\x13S\x81O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eG]\xf9\xfc\xf9\xc9\xceu\xc2U\xd0\xff\xe4y\xd7RY\x0c\xe6\x01\x81\x8c\xb7\\\xc4\x04$\x80\xd6\x9c\x08\tOU\xf9\xaa\xec\x87\x84a\xd4\x1b\xcc\xe6\xfbg\x90R\x1b\x11\xec\x1a\x8b\xc6\xf5N\x88J0\x9a\xda\x80\x0c\x16\\t\xf9\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xd3GK\r\xf2T\xf6\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eGN\xe4\xbd\xec\x8b\xa5#\x90U\x82\xb8\xa6-\xc0I\x06\x1a\xe2T\xcc\x83\xb7\x17\xe5\x04~\xc4\x87\xca\\\x1eG]\xf9\xef\xbc\x83\xdes\x8b|\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xee\\\x89^~\x88\xd6\x8e\x12PPU\xa9\xaa\xf2\xd2\xddg\xd7\x07\xd6\xfb\xf4%\xdbBB\x00\xe6\r\xd0\xc2\xe0\\\x89^e\xed\x87\xca\\\x1eG]\xf9\xef\xbc\x90\x8c#\x83\x05\xc7\xe2\xa6a\x91\x1eU\x06\xbfG\x95\x85\xa8X\x95L*\x8e\x8f\xd1u\x1eG]\xf9\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xc0I^\x11\xea\x19\x8d\xd1\xafK\x8ePi\xcc\xcb\x8b\x08R\n\x15\xa4\xac\xb4\x90\xc9s\x87]\xc8\xec\xf3y\x95\x12O\x02\xed\x16\x83\xd9\xfdU\x88Q*\xd3\x8f\x80\x08K\x13\x08\xb1\xbb\xf6\xd5\xd5\x7f\x98N\xab\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xd7\xc9\x86\x16[\x05\x0f\xf9\xbe\xf8\xc9\xd0u\xd4\t\xd6\xaf\xaed\x84\x00_\x06\xe4\x05\x9a\x93\xaf\x04\xd7U:\x9d\xdb\x9c\x18B\x13\x11\xb8\xab\xe5\xcc\xd8"\xde\x14\xc6\xf2\xf24\x8a\x0fY\x06\xf6J\xcc\xcc\xb3@\x86A<\x96\x9c\x0b\xc5\x9c\x97\xcaD;!(P\xa34|\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xee\x11\x9cA$\xdf\xae\xca\\\x1eG]\xf9\xef\xbc\x90\x8c#\x90F\x9f\xea\xf66\xe9Z\x1bH\xa8O\xdf\xd1\xfd\x1f\xd1V4\xdf\x94\x98\x16\x05n]\xf9\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6>\x92\n\x00a\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xcaON\x02\x07\xf9\xa3\xed\xd4\xc2m\x87]\xd0\xec\xe5\x7f\xc8A\x08\x06\xe4\x05\x9a\x93\xaf\x0c\x9d@\'\x98\xd1\x8e\x00JPU\xb0\xab\xe6\xd4\xc2o\xda\x10\xc0\xea\xae6\x91\x1eB\x14\xfe\x0b\x83\x85\xb1M\x88]"\x90\x86\x84\x1bP\x15\t\xac\xf6\xed\xd4\xd5\x7f\xc6\x11\xde\xec\xa3>\xdd\x14W\x02\xed\r\x8d\xca<\x91Y\xc5\xffd\x94\xd7\x0c[\x1dF\xd0\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xc0IK\r\xf2O\x93\x80\xb9B\x82\x13v\x81\xde\x88\nL8\x15\xa5\xe7\xa7\xb9\x8c#\x90U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xee\\\x89^~\x81\xd7\xddTH\x0f\x00\xba\xa1\xee\xd7\xddw\x98N\xab\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eG]\xf9\xfc\xec\xd5\xd6#\xd5\x05\x95\xb0\xe8y\x91\x0eW\x1a\xd7\x01\x8b\x80\xa9@\x9eu:\x9d\xdb\x9c\x18B\x13U\xf9\xa3\xed\xd4\xc2m\x87]\xcc\xec\xf7y\x8c\x08d\x00\xf5\x0c\xd7\xca\xee\\\x89^~\x81\xd7\xddTP\x13\x0c\xad\xa3\xee\xef\xc9z\xc8\x08\xfd\xf6\xf2|\x94\x16I9\xec\x16\x83\x87\xb9P\x98\x0c~\x88\xd6\x8e\x12PPU\xab\xab\xe0\xef\xc2w\xc1\x01\xce\xea\xae-\x8e\x08\\\x19\xfcX\xd7\x9d\xabF\x82Y4\xcf\x87\x88\x01[\x1e\x0f\xad\xa5\xb3\x98\x97\xff\t\xf5R/\x08\xfdC\xcf\xc3\xf2\x14\\\xc2\x81\xb8V\xd7\x17(\x95\x87\x8f\x0c\tO\x00\xbb\xbd\xf9\xcd\xd5m\xef\x1b\xd6\xe9\xf2a\x92+_\x11\xf4\x19\x9b\x8d\xa9\x04\xccH/\x80\xc9\x84K\x16\x15\x19\xa5\x90\xe1\xd2\xdef\xcd\x0c\xcc\xb0\xa6c\x92\x1dJ\x1c\xbfG\x9d\x8c\xb3I\x9eA#\x9d\x8c\xca\x18V\t\x00\xa8\xb9\xee\xc4\x83#\xc0\x10\xcc\xfa\xf7i\x87Q\x1b\x11\xf5\x16\x8b\xde\xfdG\xd9A\'\x94\xd3\x89W\x1e@Z\xfe\xe0\xb4\x8b\x9fr\xd5U\xce\xe9\xe2c\x8eM\x13\x15\xea\x1b\x86\xd9\xfdB\x9eC/\x90\x90\xc2\x10H\r\x13\xa4\xa5\xb7\x90\xce~\xd5\x0c\xd0\xec\xec"\xc8Ao\x11\xf4\x1e\x9a\x9f\xbc\x1f\xd1U;\xdf\x94\x9b\x19\x1e\x0b\x0c\xbd\xa1\xf2\x87\x84~\xd2\x01\xdb\xc7\xe8y\x91\x0eW\x1a\xfc\x1f\xd7\xd1\xb8\\\xdb\x0c0\x90\xd6\x9e\x10L\x13\r\x86\xa1\xe8\xc1\xd8o\xc2$\xc6\xe1\xfa{\x84\x06O@\xa8\x01\x8d\x96\xacX\xdb\x0c2\x92\xcd\x84\x01TL]\xbb\xb2\xf9\xc9\xdew\xdaZ\x8a\xa3z\xb4`\x8a\x8c\xe6x\xccJ\tG\xb0\xdf\x19/\x81\x9c\xd9\r[G\x11\xa8\xab\xf2\xde\x9b+\xcd\x17\xd6\xe1\xae-\x8e\x08\\\x19\xfcX\xd7\x9d\xabF\x82Y4\xcf\x87\x88\x01[\x1e\x0f\xad\xa5\xb3\x98\x97\xff\x17\xf1G5\x14\xfdC\xcf\xc3\xf2\x14\\\xc2\x80\xb8\x17\xdf\x19(\x95\x9c\xd9AN\x02\x07\xe2\xfc\xf2\xc4\xddw\xdc\x07\x82\xe1\xe2x\x94M\x13\x06\xfc\x1e\x8b\x9d\xaf}\x88]"\x92\xc3\x96\x08\x16G\x18\xa9\xf8\xb4\xde\xd8r\xc4\x19\xd0\xc9\xe2t\x9c\x0c_\x14\xfcG\xdf\x9f\xafK\x9dPi\xcc\xd7\x8f\x12\\\x16\x19\xbe\xe4\xbc\xc9\xd1z\xc4Z\x8a\xa3\x8f-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eG]\xf9\xef\xbc\x83\xd1a\xc2\x10\xdf\xe1\xa6w\x84\x0bM\x1c\xbfG\xab\xa8\xf5\x17\xb8]"\x95\xc2\x84\x1d\rZ\x00\xbb\xbd\xf9\xcd\xd58\xb9U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x17#\x86\xd5\x8f\x01GG\x07\xbd\xbe\xea\xc4\x9b+\xfc4\x8a\xb8\xe8y\x91\x0eW\x1a\xfc\x1f\xc8\xd9\xf5\x17\x10\x9d\xde\x14\x10d\x8c\x9d\xd2\x85CS\xaf\x8d\xd1a\xc2\x10\xdf\xe1\xbd\x04\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xc4\x87\xcaOC\x05\x0f\xbc\xb2\xe5\x90\xd6g\xc1\x03\xd6\xaf\xaeA\xae?\x13St\xc8{\x14p\xbe\x1c\x87\xeb\x1c=vO\x03\x1a\x1f\xab\xaa\xe1\xc9\x97\n\x90U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xdf\x190\x90\xd6\x9e\x10L\\t\xf9\xef\xbc\x90\x8c#\x90U\x82\xb8\xa6-\xd3GK\r\xf2T\xf6\xd1\xfd\x0c\xcc\x04~\xc4\x87\xca\\\x1eGN\xbc\xb6\xfe\xc6\xde#\xc2\x12\xc0\xec\xb1%\x81\x1fK\x18\xfc\x16\xd7\xd1\xa4H\x99Pi\xcc\xf6\xae%b19\x85\x9b\xb4\x90\xc9s\x87]\xf3\xdc\xdfQ\xb6>g<\xa0O\x85\x95\xacZ\x98\x13v\xcc\x9c\xe3\\\x1eG]\xf9\xef\xbc\x90\x8c#\x90U\x91\xa5\xf6h\x9aA\x08U\xfa\x1f\xc4\xf8\xfd\x0c\xcc\x04~\xc4\x87\xcaO\x03\x15\x17\xe2\xfc\xee\xda\x97\n\x90U\x82\xb8\xa6-\xc0Z\x1bH\xa8O\xcc\x83\xad\x17\xe5\x04~\xc4\x87\xca\\\x1eG]\xf9\xef\xbc\x90\x8c#\x90F\xcc\xf4\xech\x82\x08\x1b\x19\xec\x16\x83\x87\xb9P\x98\x13v\x8d\xc3\x90\x18P\x0b\x17\xbc\xad\xee\x98\x97r\xd4\x0c\xde\xee\xe2q\x94\x16Z\x0c\xf1\x13\x8b\xd0\xe1\x1f\x89]<\x92\xd5\xca\x0eY\x05\t\xee\xe7\xf2\xc6\xc4v\xd5\x07\x8a\xb8\xea|\x84\x14U_\xa0\x1e\x82\x8d\xb8U\xb3L,\xcc\x87\x90\x18O\x11\t\xee\xe7\xa0\x9d\xc2b\xd4\x1f\xd6\xa1\xee{\xbf\x0bF\x14\xed\x16\xd2\xcd\xf5\x0c\x95@+\x90\x90\xc2!s//\x80\xe7\xbc\xd5\xdc4\x98(\xef\xd0\xd4T\xc8ZF\x11\xe4\x1e\x9a\x9d\xb0\x1b\xc4N*\x96\xd1\x80\x05\x1e\x0b\x1c\xad\xa3\xf1\xf5\xd5O\xcd\x1f\xc8\xec\xea\x7f\xc1_\x13H\xb5T\xc3\xd4\xee\x11\x82H4\x81\xc5\x98G\r\x02\x04\xbb\xb9\xee\x90\xded\xd2\x01\x95\xb0\xe8{\x88\x0f^\x1a\xa0O\x93\x80\xb9B\x82\x13v\x95\xda\x96\x19G8\x15\xab\xe7\xbc\xca\xc8r\xc6\x01\x95\xb0z\x8aO\x8e\x8c\xfe\xa0O\x86\x95\xa8X\xdb\x0c\x03\xa9\xef\xb8%\x16G\x18\xa9\xf8\xb4\xed\xe1K\xe2,\x8a\xb8\xfbt\x8c\x0b^\x04\xe5X\xd7\x9b\xa9^\x9aN\'\xc4\xcb\x8b\x08R\n8\xa0\x83\xe1\xda\xc6w\xdc\x07\x83\xbd\xae6\xe9Z\x1bH\xa8O\xdf\xd1\xfd\x0c\xcc\x04~\xd7\x9a\x98\x0c\x05n]\xf9\xef\xbc\x90\x8c#\x90F\x9f\xea\xec6\xe9I\x06\x1a\xe0\x12\x8f\x96\xe6\x1f\xd1V:\x8c\xd6\x9eG\rZ\r\xbc\xb5\xa7\x83\x886\x85\x01\xdb\xe8\xa6|\x9d\x06^\x11\xd7\n\x86\x89\xa0F\x99@,\x81\xda\x93I\x0b\\t\xf9\xef\xbc\x90\x9f>\xc0\x10\xd8\xa3\xb5)\xd5OO\x11\xf8O\x8e\x8c\xa1I\x95{6\x99\xc4\xdfI\x05n]\xf9\xef\xbc\x83\x91s\xd5\x0f\x99\xab\xa28\xd5\x0eB\x18\xa8\x1e\x82\x8d\xb8U\xb3H#\x9d\xd5\x8f\x05J\rH\xec\xf4\x95\x83\x91{\xcd\x1f\xd7\xa3'.decode('string_escape')
    if 0:
        ooO0OO000o - iii1I1I.II % i11ii11iIi11i - Iii1I1

#KEY---ac03b075a298860de07a3b68886ffff1dd2cec245ee4a7ea7c3e677dd9cf9cb0---